#pragma once

#include "core/log_entry.hpp"
#include <string_view>
#include <mutex>

namespace axon_logger {
namespace io {

class ConsoleWriter {
public:
    ConsoleWriter();
    void write(LogLevel level, std::string_view message);

private:
    void set_color(LogLevel level);
    void reset_color();

    std::mutex m_mutex;

#ifdef _WIN32
    // Windows平台需额外保存控制台句柄和默认颜色属性，其他平台使用ANSI颜色码无需这些成员
    void* m_stdout_handle;
    unsigned short m_default_colors;
#endif
};

} // namespace io
} // namespace axon_logger


